// /**
//  * 固定时间步长 + 插值渲染示例
//  * 
//  * 展示如何使用固定更新管理器实现流畅的游戏
//  * 
//  * @author AI Assistant
//  * @date 2025-11-26
//  */

// import { Vec3 } from "cc";
// import { fixedUpdateManager } from "./FixedUpdateManager";
// import { InterpolatedTransform } from "./component/InterpolatedTransform";
// import { VelocityComponent } from "./logic/MovementLogicSystem";
// import { ViewComponent } from "./component/ViewComponent";
// import { sceneCoordinator } from "../coordinator/SceneCoordinator";
// import { ecs } from "../../core/ecs/ECS";

// // ==================== 示例 1: 创建可移动的实体 ====================

// /**
//  * 创建一个可以平滑移动的实体
//  */
// export async function createMovableEntity(
//     x: number,
//     y: number,
//     velocityX: number,
//     velocityY: number
// ): Promise<ecs.Entity> {
//     // 1. 创建实体
//     const entity = ecs.getEntity(ecs.Entity);
    
//     // 2. 添加插值变换组件
//     const transform = entity.add(InterpolatedTransform);
//     transform.setPosition(x, y, 0);
//     transform.syncPreviousFrame(); // 初始化时同步，避免闪烁
    
//     // 3. 添加速度组件
//     const velocity = entity.add(VelocityComponent);
//     velocity.setVelocity(velocityX, velocityY);
    
//     // 4. 创建视图
//     const node = await sceneCoordinator.instantiateNode('game');
//     if (node) {
//         const view = entity.add(ViewComponent);
//         view.init(node);
//     }
    
//     console.log(`[Example] 创建可移动实体: 位置(${x}, ${y}) 速度(${velocityX}, ${velocityY})`);
    
//     return entity;
// }

// // ==================== 示例 2: 圆周运动 ====================

// /**
//  * 圆周运动实体
//  */
// export class CircularMotionEntity extends ecs.Entity {
//     transform!: InterpolatedTransform;
    
//     // 圆周运动参数
//     radius: number = 100;
//     angularSpeed: number = 1; // 弧度/秒
//     angle: number = 0;
//     centerX: number = 0;
//     centerY: number = 0;
    
//     init(): void {
//         this.transform = this.add(InterpolatedTransform);
//         this.transform.syncPreviousFrame();
//     }
// }

// /**
//  * 圆周运动逻辑系统（固定 20 FPS）
//  */
// @ecs.register('CircularMotionLogic')
// export class CircularMotionLogicSystem extends ecs.ComblockSystem {
//     filter(): ecs.IMatcher {
//         return ecs.allOf(InterpolatedTransform);
//     }
    
//     update(entity: ecs.Entity): void {
//         if (!(entity instanceof CircularMotionEntity)) return;
        
//         // 更新角度（逻辑层，固定 20 FPS）
//         entity.angle += entity.angularSpeed * this.dt;
        
//         // 计算新位置
//         const x = entity.centerX + Math.cos(entity.angle) * entity.radius;
//         const y = entity.centerY + Math.sin(entity.angle) * entity.radius;
        
//         // 更新逻辑位置
//         entity.transform.setPosition(x, y);
//     }
// }

// /**
//  * 创建圆周运动示例
//  */
// export async function createCircularMotionExample(): Promise<void> {
//     console.log('\n━━━━ 圆周运动示例 ━━━━');
    
//     // 创建 5 个围绕中心旋转的实体
//     for (let i = 0; i < 5; i++) {
//         const entity = ecs.getEntity(CircularMotionEntity);
//         entity.centerX = 0;
//         entity.centerY = 0;
//         entity.radius = 100 + i * 50;
//         entity.angularSpeed = 1 - i * 0.15;
//         entity.angle = (Math.PI * 2 * i) / 5; // 均匀分布
        
//         // 创建视图
//         const node = await sceneCoordinator.instantiateNode('game');
//         if (node) {
//             const view = entity.add(ViewComponent);
//             view.init(node);
//         }
        
//         console.log(`创建圆周运动实体 ${i + 1}: 半径=${entity.radius}, 速度=${entity.angularSpeed.toFixed(2)}`);
//     }
    
//     // 注册系统
//     fixedUpdateManager.registerLogicSystem(new CircularMotionLogicSystem());
    
//     console.log('✅ 圆周运动示例创建完成');
//     console.log('━━━━━━━━━━━━━━━━━━━━\n');
// }

// // ==================== 示例 3: 抛物线运动 ====================

// /**
//  * 抛物线运动实体
//  */
// export class ProjectileEntity extends ecs.Entity {
//     transform!: InterpolatedTransform;
//     velocity!: VelocityComponent;
    
//     gravity: number = -980; // 重力加速度
//     lifetime: number = 0;
//     maxLifetime: number = 3; // 最大存活时间（秒）
    
//     init(): void {
//         this.transform = this.add(InterpolatedTransform);
//         this.velocity = this.add(VelocityComponent);
//         this.transform.syncPreviousFrame();
//     }
// }

// /**
//  * 抛物线运动逻辑系统
//  */
// @ecs.register('ProjectileLogic')
// export class ProjectileLogicSystem extends ecs.ComblockSystem {
//     filter(): ecs.IMatcher {
//         return ecs.allOf(InterpolatedTransform);
//     }
    
//     update(entity: ecs.Entity): void {
//         if (!(entity instanceof ProjectileEntity)) return;
        
//         // 更新速度（受重力影响）
//         entity.velocity.y += entity.gravity * this.dt;
        
//         // 更新位置
//         entity.transform.move(
//             entity.velocity.x * this.dt,
//             entity.velocity.y * this.dt
//         );
        
//         // 更新生命时间
//         entity.lifetime += this.dt;
        
//         // 销毁
//         if (entity.lifetime >= entity.maxLifetime || entity.transform.position.y < -500) {
//             console.log('抛射物销毁');
//             entity.destroy();
//         }
//     }
// }

// /**
//  * 创建抛物线运动示例
//  */
// export async function createProjectileExample(): Promise<void> {
//     console.log('\n━━━━ 抛物线运动示例 ━━━━');
    
//     // 创建 10 个不同角度的抛射物
//     for (let i = 0; i < 10; i++) {
//         const entity = ecs.getEntity(ProjectileEntity);
//         entity.transform.setPosition(-300, 0);
        
//         // 计算发射角度和初速度
//         const angle = (30 + i * 5) * (Math.PI / 180); // 30-75度
//         const speed = 500;
//         entity.velocity.x = Math.cos(angle) * speed;
//         entity.velocity.y = Math.sin(angle) * speed;
        
//         // 创建视图
//         const node = await sceneCoordinator.instantiateNode('game');
//         if (node) {
//             const view = entity.add(ViewComponent);
//             view.init(node);
//         }
        
//         console.log(`发射抛射物 ${i + 1}: 角度=${(angle * 180 / Math.PI).toFixed(1)}°`);
//     }
    
//     // 注册系统
//     fixedUpdateManager.registerLogicSystem(new ProjectileLogicSystem());
    
//     console.log('✅ 抛物线运动示例创建完成');
//     console.log('━━━━━━━━━━━━━━━━━━━━\n');
// }

// // ==================== 示例 4: 性能对比 ====================

// /**
//  * 性能对比测试
//  */
// export async function performanceComparisonTest(): Promise<void> {
//     console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
//     console.log('📊 性能对比测试');
//     console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
    
//     // 创建大量实体测试性能
//     const entityCount = 100;
//     console.log(`创建 ${entityCount} 个移动实体...`);
    
//     const startTime = performance.now();
    
//     for (let i = 0; i < entityCount; i++) {
//         const x = (Math.random() - 0.5) * 1000;
//         const y = (Math.random() - 0.5) * 600;
//         const vx = (Math.random() - 0.5) * 200;
//         const vy = (Math.random() - 0.5) * 200;
        
//         await createMovableEntity(x, y, vx, vy);
//     }
    
//     const endTime = performance.now();
    
//     console.log(`✅ 创建完成，耗时: ${(endTime - startTime).toFixed(2)}ms`);
//     console.log(`平均每个实体: ${((endTime - startTime) / entityCount).toFixed(2)}ms`);
    
//     // 等待几秒后打印统计
//     setTimeout(() => {
//         console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
//         console.log('📊 运行统计（3秒后）');
//         fixedUpdateManager.printStats();
//     }, 3000);
    
//     setTimeout(() => {
//         console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
//         console.log('📊 运行统计（10秒后）');
//         fixedUpdateManager.printStats();
//     }, 10000);
// }

// // ==================== 导出示例集合 ====================

// export const FixedUpdateExamples = {
//     // 基础
//     createMovableEntity,
    
//     // 圆周运动
//     createCircularMotion: createCircularMotionExample,
    
//     // 抛物线运动
//     createProjectile: createProjectileExample,
    
//     // 性能测试
//     performanceTest: performanceComparisonTest,
    
//     // 配置管理器
//     configure: (logicFPS: number) => {
//         fixedUpdateManager.configure({
//             logicFPS,
//             enableInterpolation: true,
//             enableStats: true
//         });
//         console.log(`✅ 逻辑帧率配置为: ${logicFPS} FPS`);
//     },
    
//     // 打印统计
//     printStats: () => {
//         fixedUpdateManager.printStats();
//     },
    
//     // 重置统计
//     resetStats: () => {
//         fixedUpdateManager.resetStats();
//         console.log('✅ 统计信息已重置');
//     }
// };

// // ==================== 在控制台使用示例 ====================
// // 
// // 使用方法：
// // 1. 在游戏启动后，打开控制台
// // 2. 导入示例：
// //    import { FixedUpdateExamples } from 'db://assets/scripts/ecs/FixedUpdateExample';
// // 
// // 3. 运行示例：
// //    await FixedUpdateExamples.createMovableEntity(0, 0, 100, 50);
// //    await FixedUpdateExamples.createCircularMotion();
// //    await FixedUpdateExamples.createProjectile();
// //    await FixedUpdateExamples.performanceTest();
// // 
// // 4. 查看统计：
// //    FixedUpdateExamples.printStats();
// // 
// // 5. 调整帧率：
// //    FixedUpdateExamples.configure(30); // 改为 30 FPS

